package com.wut.clock.mongo.repository;

import com.wut.clock.mongo.dto.CollectionParams;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;


/**
 * @author ZYH
 * @unit D9Lab
 * @description 收藏repository
 * @date 2022/6/11 10:57
 */
public interface CollectionRepository extends MongoRepository<CollectionParams,String> {

    /**
     * 根据用户id和文章id查找收藏
     * @param userId 用户id
     * @param articleId 文章id
     * @return CollectionParams
     */
    CollectionParams findByUserIdAndArticleId(Integer userId,Integer articleId);

    /**
     * 根据用户id和文章id取消收藏
     * @param userId 用户id
     * @param articleId 文章id
     * @return int >0
     */
    int deleteByUserIdAndArticleId(Integer userId,Integer articleId);

    /**
     * 删除收藏夹下的收藏
     * @param userId 用户id
     * @param favoriteId 收藏夹id
     */
    int deleteAllByUserIdAndFavoriteId(Integer userId,Integer favoriteId);

    /**
     * 根据用户id和收藏夹id获取收藏文章列表
     * @param userId 用户id
     * @param favoriteId 收藏夹id
     * @param pageable 分页
     * @return 收藏文章列表
     */
    Page<CollectionParams> findByUserIdAndFavoriteIdOrderByCreateTimeDesc(Integer userId, Integer favoriteId,Pageable pageable);

    /**
     * 根据用户id和收藏夹id统计收藏数
     * @param userId 用户id
     * @param favoriteId 收藏夹id
     * @return 收藏数
     */
    int countByUserIdAndFavoriteId(Integer userId,Integer favoriteId);

    /**
     * 统计文章的收藏数
     * @param articleId 文章id
     * @return 收藏数
     */
    int countByArticleId(Integer articleId);

}
